paint-brush
आपको एकाधिक प्रोग्रामिंग भाषाएं सीखने की आवश्यकता क्यों हैद्वारा@wagslane
3,410 रीडिंग
3,410 रीडिंग

आपको एकाधिक प्रोग्रामिंग भाषाएं सीखने की आवश्यकता क्यों है

द्वारा Lane Wagner5m2022/07/31
Read on Terminal Reader
Read this story w/o Javascript

बहुत लंबा; पढ़ने के लिए

Boot.dev ब्राउज़र में एक बैटरी-शामिल कंप्यूटर विज्ञान पाठ्यक्रम है। अधिकांश कार्यक्रम सिर्फ जावास्क्रिप्ट, पायथन और गो का उपयोग कर सकते हैं। [Boot.dev] के लिए पूर्ण पाठ्यक्रम के लिए कुल मिलाकर केवल लगभग 6 भाषाओं के उपयोग की आवश्यकता होगी। अनेक भाषाएँ सीखने से आपकी सुरंग-दृष्टि दूर हो जाती है, और आपको प्रोग्रामिंग के विभिन्न तरीकों को समझने में मदद मिलती है। आपको विभिन्न भाषाओं से परिचित कराने से, आपको [प्रोग्रामिंग] के विभिन्न तरीकों के बीच कुछ लाभ, कमियां, समानताएं और अंतर दिखाई देने लगेंगे।

Company Mentioned

Mention Thumbnail

Coin Mentioned

Mention Thumbnail
featured image - आपको एकाधिक प्रोग्रामिंग भाषाएं सीखने की आवश्यकता क्यों है
Lane Wagner HackerNoon profile picture

मैं पिछले कुछ वर्षों से एक साइड-प्रोजेक्ट के रूप में Boot.dev का निर्माण कर रहा हूं, और हाल ही में कई नए छात्रों ने एक ही प्रश्न पूछा है:


"आपके कंप्यूटर विज्ञान पाठ्यक्रम के लिए मुझे एक से अधिक प्रोग्रामिंग भाषा सीखने की आवश्यकता क्यों है?"


ऐसा लगता है कि बड़ी संख्या में छात्र इस विचार के साथ मंच से जुड़ते हैं कि वे "अपने प्रयासों को विभाजित करने" के बजाय "एक ही भाषा में पूरी तरह से महारत हासिल करेंगे"। जबकि मैं इसे आगे बढ़ते हुए ऐप में बेहतर तरीके से समझाने की योजना बना रहा हूं, मैं इस ब्लॉग पोस्ट को इस बारे में गहन विवरण प्रदान करने के लिए लिखना चाहता था कि हमने अपने सीएस कार्यक्रम के दौरान आपने कई भाषाएं क्यों सीखीं।

सबसे पहले, Boot.dev पर कुछ पृष्ठभूमि

ताकि आप समझ सकें कि मैं कहाँ से आ रहा हूँ, मैं समझाता हूँ कि Boot.dev क्या है, और एक शैक्षिक मंच के रूप में इसके लक्ष्य क्या हैं।


Boot.dev ब्राउज़र में एक बैटरी-शामिल कंप्यूटर विज्ञान पाठ्यक्रम है। कोड सीखने के सर्वोत्तम तरीके के बारे में हमारी कुछ मजबूत राय है। उदाहरण के लिए:


  • हम पहले कंप्यूटर विज्ञान और सॉफ्टवेयर इंजीनियरिंग अवधारणाओं को पढ़ाते हैं। विशिष्ट प्रौद्योगिकियां केवल एक तंत्र है जिसके द्वारा हम अवधारणाओं को पढ़ाते हैं।
  • हम पूरी तरह से काम कर रहे हैं
  • हमारे पास गाइडेड कोर्स और अनगाइडेड प्रोजेक्ट हैं
  • हम आधुनिक तकनीकों और भाषाओं को पढ़ाते हैं
  • हमारे पास एक रैखिक पाठ्यक्रम है, इसलिए छात्रों को इस बारे में चिंता करने की ज़रूरत नहीं है कि उन्हें आगे क्या सीखना चाहिए
  • हम छात्रों को प्रेरित रखने के लिए जितना संभव हो सके अनुभव को सरल बनाते हैं

तो पूरे पाठ्यक्रम को एक ही भाषा में क्यों नहीं पढ़ाया जा सकता है?

यदि आप जीथब पर अपने सार्वजनिक रोडमैप में हमारे द्वारा नियोजित पूर्ण सीएस पाठ्यक्रम को देखते हैं, तो आप देखेंगे कि यह मूल रूप से असंभव है। कुछ अवधारणाएँ हैं जो विशिष्ट तकनीकों के साथ इतनी कसकर जुड़ी हुई हैं कि उन सभी को एक ही तरह से सिखाने की कोशिश करने का कोई मतलब नहीं है। आइए कुछ तुच्छ उदाहरण देखें।


  • SQL के बिना डेटाबेस को वास्तव में पढ़ाना कठिन है
  • विशुद्ध रूप से कार्यात्मक भाषा के बिना कार्यात्मक प्रोग्रामिंग सिखाना कठिन है
  • ऑब्जेक्ट ओरिएंटेड भाषा के बिना OOP को पढ़ाना कठिन है
  • असेंबलर के बिना हार्डवेयर इंटरफेस सिखाना कठिन है
  • जोरदार टाइप की गई भाषा के बिना टाइपिंग सिखाना कठिन है
  • जावास्क्रिप्ट के बिना वेब सिखाना कठिन है
  • पायथन के बिना एमएल को पढ़ाना मुश्किल है

संक्षेप में, हमारे पास 2 प्रतिस्पर्धी लक्ष्य हैं:

  • हम यथासंभव कम से कम तकनीकों का उपयोग करके सभी अवधारणाओं को पढ़ाना चाहते हैं
  • हम उन तकनीकों का उपयोग करके सभी अवधारणाओं को पढ़ाना चाहते हैं जो अवधारणा को सर्वोत्तम रूप से सिखाती हैं

तो आप मुझे कितनी भाषाएँ सिखाने जा रहे हैं?

विश्वविद्यालय में अपनी पारंपरिक सीएस डिग्री के दौरान, मैंने 12+ प्रोग्रामिंग भाषाओं का उपयोग किया। मुझे लगता है कि यह बहुत ज्यादा है। मैं उन्हें सिखाने के लिए भाषाएँ नहीं पढ़ाना चाहता। यह वास्तव में एक अनुकूलन समस्या है जहां हम जितनी संभव हो उतनी कम भाषाओं को पेश करना चाहते हैं, जबकि हम हर उस अवधारणा को प्रभावी ढंग से पढ़ाना चाहते हैं जिसे हम पढ़ाना चाहते हैं। मुझे विश्वास है कि Boot.dev के पूर्ण पाठ्यक्रम के लिए कुल मिलाकर केवल लगभग 6 भाषाओं के उपयोग की आवश्यकता होगी, और यह कि अधिकांश कार्यक्रम केवल JavaScript, Python, और Go का उपयोग कर सकते हैं।

अनेक भाषाएँ सीखने से आपकी सुरंग-दृष्टि दूर हो जाती है

कुछ अलग प्रोग्रामिंग भाषाओं को सीखने का एक अतिरिक्त लाभ है जिनके बारे में हमने अभी तक बात नहीं की है। आपको विभिन्न भाषाओं से परिचित कराने से, आपको प्रोग्रामिंग के विभिन्न तरीकों के बीच कुछ लाभ, कमियां, समानताएं और अंतर दिखाई देने लगेंगे।


यदि आप केवल एक प्रोग्रामिंग भाषा लिखते हैं, तो यह मान लेना आसान है कि चीजों को करने का एक निश्चित तरीका "सर्वश्रेष्ठ तरीका", "सही तरीका" या शायद "एकमात्र तरीका" भी है।

उदाहरण के लिए, जावास्क्रिप्ट और गो में त्रुटि प्रवाह के लिए बेतहाशा भिन्न दृष्टिकोण हैं:

 // JavaScript try { doSomethingDangerous() } catch (err){ console.log(err) } // Go err := doSomethingDangerous() if err != nil { fmt.Println(err) }

आपको कई भाषाओं से परिचित कराने से, मेरा दृढ़ विश्वास है कि आपको प्रत्येक तकनीक की गहरी समझ होगी, और जब आप विभिन्न उपकरणों का उपयोग करना चाहेंगे।

क्या मैं एक जैक-ऑफ-ऑल-ट्रेड बनूंगा, किसी का मालिक नहीं?

व्यक्तिगत रूप से, मुझे ऐसा नहीं लगता। मैं वास्तव में सोचता हूं कि यदि आप अपनी सीखने की यात्रा की शुरुआत से लेकर अपनी पहली कोडिंग नौकरी तक केवल एक प्रोग्रामिंग भाषा पर ध्यान केंद्रित करते हैं, तो आप वास्तव में बदतर स्थिति में होंगे यदि आपने अपने क्षितिज को व्यापक बनाने में कुछ समय बिताया है।

कुछ लोग मानते हैं कि "कोड सीखना" "प्रोग्रामिंग भाषा सीखना" है। उन्हें लगता है कि यदि आप पायथन सीखते हैं, और फिर जावास्क्रिप्ट सीखना चाहते हैं, तो आप 0 से शुरू करेंगे।


यह सच्चाई से आगे नहीं हो सकता।

आपकी दूसरी प्रोग्रामिंग भाषा सीखने में आपके पहले सीखने में लगने वाले समय का 1/5 भाग लगेगा, क्योंकि आपके द्वारा सीखी गई लगभग 80% अवधारणाएं दोनों भाषाओं पर लागू होंगी। एक बार जब आप 3 या 4 अलग-अलग कोडिंग भाषाओं का उपयोग कर लेते हैं, तो आप लगभग किसी भी भाषा में कोड देख सकते हैं और समझ सकते हैं कि यह क्या कहता है। हो सकता है कि आपको कभी-कभी सिंटैक्स देखने की आवश्यकता पड़े, लेकिन हर कोई वैसे भी ऐसा करता है


अच्छा, क्या आप कम से कम सामान्य प्रयोजन वाली भाषाओं की संख्या कम कर सकते हैं?

यदि आपने पाठ्यक्रम ब्राउज़ किया है, तो आपने देखा होगा कि हमने अधिकांश सामग्री को पढ़ाने के लिए 3 भाषाओं पर समझौता किया है:


हम जितना संभव हो सके इन 3 भाषाओं का उपयोग करने का प्रयास करने जा रहे हैं, केवल विषय वस्तु के लिए आवश्यक अन्य तकनीकों में मिश्रण करना। उदाहरण के लिए, जब हम रिलेशनल डेटाबेस के बारे में बात कर रहे हों तो SQL का उपयोग करना।

आइए मैं समझाता हूं कि हमने इन तीनों को विशेष रूप से क्यों चुना।

जावास्क्रिप्ट क्यों?

आप वास्तव में इन दिनों जावास्क्रिप्ट से दूर नहीं हो सकते। बैकएंड प्रोग्रामिंग के बारे में सीखना कठिन है (जिसमें हमारे अधिकांश छात्र रुचि रखते हैं) बिना यह समझे कि बैकएंड क्यों मौजूद है। बैकएंड केवल फ्रंट-एंड को पावर देने के लिए मौजूद है, इसलिए यह समझ में आता है कि हमें आपको पहले कुछ फ्रंट-एंड बेसिक्स सिखाने की आवश्यकता होगी। यदि आप वेब पर फ्रंट-एंड बनाने जा रहे हैं, तो यह लगभग निश्चित रूप से जावास्क्रिप्ट का उपयोग करेगा, इसलिए हमारा हाथ इस पर मजबूर है।

पायथन क्यों?

वाक्य रचनात्मक रूप से बोलते हुए पाइथन आपके रास्ते से हट जाता है। एल्गोरिथम और डेटा संरचनाएं ऐसी अवधारणाएं हैं जिन पर छात्रों को अक्सर महारत हासिल करना अधिक कठिन लगता है, इसलिए हमारे लिए ऐसी भाषा चुनना समझ में आया जो हमारे छात्रों को तर्क पर यथासंभव ध्यान केंद्रित करने की अनुमति दे। पायथन भी कई तरह से अंग्रेजी की तरह पढ़ता है, जिससे फिर से यह देखना आसान हो जाता है कि पायथन में एक एल्गोरिथ्म एक नज़र में क्या कर रहा है। इसके अतिरिक्त, हमारे पास पाठ्यक्रम के अंत में एआई और एमएल सामग्री है, इसलिए यह दो-पर-पत्थर की स्थिति है जहां हम अपने छात्रों को एक अतिरिक्त भाषा सीखने की आवश्यकता के बिना उस बिंदु पर पायथन पर फिर से जा सकते हैं।

क्यों जायें?

हमारी सीएस डिग्री में बैकएंड प्रोग्रामिंग पर जोर दिया गया है, और मुझे व्यक्तिगत रूप से बैकएंड भाषा के रूप में गो के साथ जबरदस्त सफलता मिली है। गो कुछ अन्य विकल्पों की तुलना में संगामिति, संकलक और वितरित सिस्टम जैसी चीजों को पढ़ाना आसान बना देगा। मुझे लगता है कि हमारे पास अंततः एक जंग कोर्स हो सकता है जो मैन्युअल मेमोरी प्रबंधन के मामले में और भी निचले स्तर तक जाता है, लेकिन मैंने अभी तक उस पर फैसला नहीं किया है।

प्रशन? टिप्पणियाँ? चिंताओं?

सीधे मुझ तक पहुंचने का सबसे अच्छा तरीका है Boot.dev Discord सर्वर से जुड़ना। आप मुझे ट्विटर पर @@ भी कर सकते हैं। मुझे बताएं कि आप हमारे दृष्टिकोण के बारे में क्या सोचते हैं!


यहां भी प्रकाशित https://blog.boot.dev/education/learn-multiple-programming-languages/